package com.crm.service.impl.cluePoolManager;

import com.crm.dao.mapper.cluePoolManager.CluePoolPublicMapper;
import com.crm.dao.mapper.customMapper.cluePoolManagerCustomMapper.CluePoolCustomMapper;
import com.crm.model.entity.cluePoolManager.CluePoolPublic;
import com.crm.model.qo.cluePoolManager.CluePoolQO;
import com.crm.model.vo.cluePoolManager.CluePoolVO;
import com.crm.service.cluePoolManager.CluePoolFormDbService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Author yincuimei
 * @Date 2020/12/25 9:46
 */
@Service
public class CluePoolFormDbServiceImpl implements CluePoolFormDbService {
    @Autowired
    private CluePoolCustomMapper cluePoolCustomMapper;
    @Autowired
    private CluePoolPublicMapper cluePoolPublicMapper;

    /**
     * 管理系统(超级管理员)线索管理--线索公海表单
     *    展示：所有管理模块创建的私有池、分公司公有池、全国公有池未删除的线索池;用户模块创建的未删除的个人池
     *    操作:私有池、分公司公有池、全国公有池能修改、删除、停用/启用线索池;个人池不能修改、删除、没有停用/启用线索池操作
     * @param cluePoolQO ---线索公海表单查询条件
     * @param dateUnit   ---全部、本周、本月查询条件
     * @param orderStr   ---线索公海表单排序字段及规则
     * @Author yincuimei
     * @return
     */
    @Override
    public List<CluePoolVO> selectAllCluePoolList(CluePoolQO cluePoolQO, Integer dateUnit,String orderStr) {
        return cluePoolCustomMapper.selectAllCluePoolList(cluePoolQO,dateUnit,orderStr);
    }

    /**
     * 管理系统(普通管理员)线索管理--线索公海表单
     *    展示： 全国池未删除的线索池;创建的所选分公司未删除的分公司公有池;本公司创建的未删除的私有池;本公司创建的个人池
     *    操作: 全国池不能修改、删除、停用/启用线索池;
     *         创建时所选的分公司未删除的分公司的公有池能修改、删除、停用/启用;
     *         本公司创建的未删除的私有池:其中自己创建的私有池能修改、删除、停用/启用; 在权限与详情那配置管理组权限的人能修改、删除、停用/启用,否则只能查看;
     *         个人池不能操作
     * @param cluePoolQO  ---线索公海表单查询条件
     * @param companyId   ---公司ID
     * @param dateUnit    ---全部、本周、本月查询条件
     * @param orderStr    ---线索公海表单排序字段及规则
     * @Author yincuimei
     * @return
     */
    @Override
    public List<CluePoolVO> selectNormalCluePoolList(CluePoolQO cluePoolQO, String companyId, Integer dateUnit, String orderStr) {
        return cluePoolCustomMapper.selectNormalCluePoolList(cluePoolQO,companyId,dateUnit,orderStr);
    }

    /**
     * 查询登录人私有池设置管理权限的池子
     * @param accountId   ---登录人ID
     * @Author yincuimei
     * @return
     */
    @Override
    public List<String> selectPrivateCluePoolManagerList(String accountId) {
        return cluePoolCustomMapper.selectPrivateCluePoolManagerList(accountId);
    }

    /**
     * 线索管理(管理系统)
     *     --线索公海表单开启/停用线索池
     * @param cluePoolPublic
     * @Atuhor yincuimei
     * @return
     */
    @Override
    public Boolean updatePoolStateById(CluePoolPublic cluePoolPublic) {
        return cluePoolPublicMapper.updateByPrimaryKeySelective(cluePoolPublic) > 0;
    }
}
